home *** CD-ROM | disk | FTP | other *** search
/ Dos/V Magazine 1995 August 15 / CD [VMAG950815].bin / vmagcd / taiken / qhachi / setup.ms_ / setup.ms
Encoding:
Text File  |  1995-06-27  |  7.1 KB  |  308 lines

  1. '$INCLUDE 'setupapi.inc'
  2. '$INCLUDE 'msdetect.inc'
  3.  
  4. ' Dialog ID's
  5. '
  6. CONST INSTALLTYPE    = 300
  7. CONST ASKQUIT        = 200
  8. CONST EXITFAILURE    = 400
  9. CONST EXITSUCCESS    = 700
  10. CONST EXITQUIT        = 600
  11.  
  12.  
  13. '
  14. ' Bitmap ID
  15. '
  16. CONST LOGO = 1
  17.  
  18.  
  19. ' From windows.h:
  20. '
  21. CONST WS_VISIBLE=&H10000000
  22. CONST WS_BORDER =&H00800000
  23. CONST WS_CLIPCHILDREN =&H02000000
  24. CONST GWL_STYLE =-16
  25. CONST SW_SHOWMAXIMIZED=3
  26. CONST MB_YESNO=4
  27. CONST IDNO=7
  28. CONST SPI_SETSCREENSAVEACTIVE=17
  29. CONST WM_WININICHANGE=26
  30.  
  31.  
  32. ' PMDDE ùp
  33. CONST PMDDE_ACT_DELETEGROUP=4
  34. CONST PMDDE_ACT_DELETEPROG=8
  35.  
  36.  
  37.  
  38. ' è╓ÉöÆΦï`
  39. '
  40. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  41. DECLARE    FUNCTION SetWindowsInfo( _winDir$ )
  42. DECLARE FUNCTION ResetWindowsInfo( _winDir$ )
  43. DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  44. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  45.  
  46. DECLARE FUNCTION RegisterDDEClient LIB "MSCUISTF.DLL" ( bToggle% ) AS INTEGER
  47. DECLARE FUNCTION PMDDE LIB "MSCUISTF.DLL" ( wAction%, szGroupDesc$, szGroupFile$, szCmdLine$, szProgDesc$, szIconFile$, nIconID% ) AS INTEGER
  48. DECLARE FUNCTION RemoveDirEx LIB "MSCUISTF.DLL" ( _destDir$ )
  49. DECLARE FUNCTION WritePrivateProfileString LIB "KRNL386.EXE" (szSection$, szEntry$, szString$, szFileName$) AS LONG
  50. DECLARE FUNCTION SystemParametersInfo LIB "USER.EXE" (uAction%, uParam%, lpvParam$, ufWinini%) AS INTEGER
  51.  
  52.  
  53. ' âXâ^ü[âg
  54. '
  55.  
  56. ' Åëè·ë╗Åêù¥
  57. '
  58. INIT:
  59.  
  60.  
  61.     ' Window ì┼æσë╗
  62.     '
  63.     hWnd%=HwndFrame()
  64.     l&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN)
  65.     i%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  66.  
  67.  
  68.     ' âåü[âUü[âJâXâ^âÇécékéké≡ùpê╙
  69.     '
  70.     _cuiDLL$ = "mscuistf.dll"
  71.  
  72.  
  73.     ' â^âCâgâïé¿éµé╤â^âCâgâïârâbâgâ}âbâvé≡É▌ÆΦ
  74.     '
  75.     SetBitmap _cuiDLL$, LOGO
  76.     SetTitle "âZâbâgâAâbâv"
  77.  
  78.     prev% = ShowWaitCursor()
  79.  
  80.  
  81.     ' SETUP.INF âtâ@âCâïé╠ô╟é▌ì₧é▌
  82.     '
  83.     infFile$ = GetSymbolValue("STF_SRCINFPATH")
  84.     IF infFile$ = "" THEN
  85.         infFile$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  86.     END IF
  87.     ReadInfFile infFile$
  88.  
  89.  
  90.     ' â\ü[âXüEâfâXâgâlü[âVâçâôâfâBâîâNâgâèé≡É▌ÆΦ
  91.     '
  92.     _winDir$ = GetWindowsDir()
  93.     _destDir$ = _winDir$
  94.     _srcDir$ = GetSymbolValue("STF_SRCDIR")
  95.  
  96.     RestoreCursor prev%
  97.  
  98.  
  99. ' âCâôâXâgü[âïâ^âCâvé╠æIæ≡
  100. '
  101. INSTTYPE:
  102.  
  103.     ' üuâCâôâXâgü[âïâ^âCâvé╠æIæ≡üvâ_âCâAâìâOâ{âbâNâXÅêù¥
  104.     '
  105.     ret$ = UIStartDlg(_cuiDLL$, INSTALLTYPE, "FInstallTypeDlgProc", 0, "")
  106.     UIPop 1
  107.     IF ret$ = "CONTINUE" THEN
  108.         INSTTYPE$ = GetSymbolValue("InstallType")
  109.         IF INSTTYPE$ = "INSTALL" THEN
  110.             GOTO DOINSTALL
  111.         ELSEIF INSTTYPE$ = "UNINST" THEN
  112.             GOTO DOUNINST
  113.         END IF
  114.     ELSEIF ret$ = "CANCEL" THEN
  115.         END
  116.     END IF
  117.  
  118.  
  119. ' âCâôâXâgü[âï
  120. '
  121. DOINSTALL:
  122.  
  123.  
  124. ' âfâBâXâNï≤é½ùeù╩â`âFâbâN
  125. '
  126. CHECKSIZE:
  127.  
  128.     prev% = ShowWaitCursor()
  129.  
  130.     ListSym$="list"
  131.     NeedSym$="need"
  132.  
  133.     _extraCosts$ = "ExtraCosts"
  134.     FOR i% = 1 TO 26 STEP 1
  135.         AddListItem _extraCosts$, "0"
  136.     NEXT i%
  137.     ClearCopyList
  138.     AddSectionFilesToCopyList "Files", _srcDir$, _destDir$
  139.     _stillNeed& = GetCopyListCost( _extraCosts$, ListSym$, NeedSym$ )
  140.  
  141.     RestoreCursor prev%
  142.  
  143.     IF _stillNeed& > 0 THEN
  144.         destDrive$ = ucase$( MID$( _destDir$, 1, 1 ) )
  145.         destDrv% = ASC( destDrive$ ) - ASC( "A" ) + 1
  146.         szNeed$ = GetListItem( NeedSym$, destDrv% )
  147.         i% = DoMsgBox( "âCâôâXâgü[âïé╔é═üA" + destDrive$ + ": âhâëâCâué╔éáé╞ " + szNeed$ + "âoâCâgé╠ùeù╩é¬òKùvé┼é╖üB", "ùeù╩òsæ½", MB_ICONHAND+MB_OK )
  148.         ERROR STFQUIT
  149.     END IF
  150.  
  151.  
  152. ' âCâôâXâgü[âïÅêù¥
  153. '
  154. INSTALL:
  155.  
  156.     ' âfâXâgâlü[âVâçâôâfâBâîâNâgâèì∞ɼ
  157.     '
  158.     prev% = ShowWaitCursor()
  159.     CreateDir _destDir$, cmoNone
  160.     RestoreCursor prev%
  161.  
  162.     ' âtâ@âCâïé╠âRâsü[
  163.     '
  164.     CopyFilesInCopyList
  165.  
  166.     ' Windows âVâXâeâÇÉ▌ÆΦ
  167.     '
  168.     d% = SetWindowsInfo( _winDir$ )
  169.  
  170.  
  171. ' ON ERROR Ä₧é╠Åêù¥
  172. '
  173. QUIT:
  174.     ON ERROR GOTO ERRQUIT
  175.  
  176.     IF ERR = 0 THEN
  177.         dlg% = EXITSUCCESS
  178.     ELSEIF ERR = STFQUIT THEN
  179.         dlg% = EXITQUIT
  180.     ELSE
  181.         dlg% = EXITFAILURE
  182.     END IF
  183. QUITL1:
  184.     ret$ = UIStartDlg(_cuiDLL$, dlg%, "FInfo0DlgProc", 0, "")
  185.     IF ret$ = "REACTIVATE" THEN
  186.         GOTO QUITL1
  187.     END IF
  188.     UIPop 1
  189.  
  190.     END
  191.  
  192.  
  193. ERRQUIT:
  194.     i% = DoMsgBox( "ôαòöâGâëü[ : âåü[âUü[âTâ|ü[âgîWé▄é┼üAé▓ÿAùìé¡é╛é│éóüB", "âZâbâgâAâbâv", MB_OK+MB_TASKMODAL+MB_ICONHAND )
  195.     END
  196.  
  197.  
  198. ASKQUIT:
  199.     ret$ = UIStartDlg(_cuiDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  200.  
  201.     IF ret$ = "EXIT" THEN
  202.         UIPop 1
  203.         ERROR STFQUIT
  204.     ELSEIF ret$ = "REACTIVATE" THEN
  205.         GOTO ASKQUIT
  206.     ELSE
  207.         UIPop 1
  208.     END IF
  209.     RETURN
  210.  
  211.  
  212. ' âAâôâCâôâXâgü[âï
  213. '
  214. DOUNINST:
  215.  
  216.     ' èm  öF
  217.     '
  218.     d% = DoMsgBox( "ânü[âhâfâBâXâNé╔éáéΘâfü[â^é≡æSé─ìφÅ£é╡é▄é╖üBéµéδé╡éóé┼é╖é⌐üH", "âAâôâCâôâXâgü[âï", MB_YESNO )
  219.     IF d% = IDNO THEN
  220.         END
  221.     END IF
  222.  
  223.     prev% = ShowWaitCursor()
  224.  
  225.     ' âfâXâgâlü[âVâçâôâfâBâîâNâgâèôαé╠âtâ@âCâïæSìφÅ£
  226.     '
  227.     szDelFiles$="DelFile"
  228.     MakeListFromSectionFilename szDelFiles$, "Files"
  229.     length% = GetListLength( szDelFiles$ )
  230.     FOR j%=1 TO length% STEP 1
  231.         szDelFile$ =GetListItem( szDelFiles$, j% )
  232.         szDelFile$ = MakePath( _destDir$, szDelFile$ )
  233.         RemoveFile szDelFile$, cmoForce
  234.     NEXT j%
  235.  
  236.     d% = ResetWindowsInfo( _winDir$ )
  237.  
  238.     RestoreCursor prev%
  239.  
  240.     ' ÅIù╣é╠ƱĪ
  241.     '
  242.     d% = DoMsgBox( "ânü[âhâfâBâXâNé⌐éτüAâfü[â^é≡æSé─ìφÅ£é╡é▄é╡é╜üB", "âAâôâCâôâXâgü[âï", MB_ICONINFORMATION )
  243.     END
  244.  
  245.  
  246. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  247. ' FUNCTION MakePath
  248. '
  249. ' Purpose:
  250. '     Appends a file name to the end of a directory path,
  251. '     inserting a backslash character as needed.
  252. ' Arguments:
  253. '     pathName$ - full directory path (with optional ending "\")
  254. '     fileName$ - file name to append to directory
  255. ' Returns:
  256. '     Resulting fully qualified path name.
  257. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  258.  
  259. FUNCTION MakePath (pathName$, fileName$) STATIC AS STRING
  260.     IF pathName$ = "" THEN
  261.         MakePath = fileName$
  262.     ELSEIF fileName$ = "" THEN
  263.         MakePath = pathName$
  264.     ELSEIF MID$(pathName$, LEN(pathName$), 1) = "\" THEN
  265.         MakePath = pathName$ + fileName$
  266.     ELSE
  267.         MakePath = pathName$ + "\" + fileName$
  268.     END IF
  269. END FUNCTION
  270.  
  271.  
  272.  
  273. FUNCTION    SetWindowsInfo( _winDir$ ) STATIC
  274.  
  275.     szSystemIni$ = MakePath( _winDir$, "SYSTEM.INI" )
  276.     szWinIni$ = MakePath( _winDir$, "WIN.INI" )
  277.  
  278.     ' SYSTEM.INI é╠ [boot],SCRNSAVE.EXE= âGâôâgâèÅæé½ì₧é▌
  279.     '
  280.     szEntry$ = MakePath( _winDir$, "SVRCANBE.SCR" )
  281.     d% = WritePrivateProfileString( "boot", "SCRNSAVE.EXE", szEntry$, szSystemIni$ )
  282.  
  283.     ' WIN.INI é╠ [windows],ScreenSaveActive= âGâôâgâèÅæé½ì₧é▌
  284.     d% = SystemParametersInfo( SPI_SETSCREENSAVEACTIVE, 1, "", WM_WININICHANGE )
  285.  
  286.     ' SYSTEM.INI é╠ [mciseq.drv],disablewarning= âGâôâgâèÅæé½ì₧é▌
  287.     '
  288.     d% = WritePrivateProfileString( "mciseq.drv", "disablewarning", "TRUE", szSystemIni$ )
  289.  
  290.  
  291. END FUNCTION
  292.  
  293.  
  294.  
  295. FUNCTION    ResetWindowsInfo( _winDir$ ) STATIC
  296.  
  297.     szSystemIni$ = MakePath( _winDir$, "SYSTEM.INI" )
  298.     szWinIni$ = MakePath( _winDir$, "WIN.INI" )
  299.  
  300.     ' WIN.INI é╠ [windows],ScreenSaveActive= âGâôâgâèÅæé½ì₧é▌
  301.     d% = SystemParametersInfo( SPI_SETSCREENSAVEACTIVE, 0, "", WM_WININICHANGE )
  302.  
  303.     ' SYSTEM.INI é╠ [boot],SCRNSAVE.EXE= âGâôâgâèÅæé½ì₧é▌
  304.     '
  305.     d% = WritePrivateProfileString( "boot", "SCRNSAVE.EXE", "(é╚é╡)", szSystemIni$ )
  306.  
  307. END FUNCTION
  308.